package pers.zc.activiti.shejimoshi.guanchazhe.guanchazhe2;

import java.util.ArrayList;
import java.util.List;

/**
 * @description 主题实现类, 某某杂志
 * @Author Lin FuYuan
 * @date 2020/1/6
 */
public class ZhuTiShiXian implements Subject{
    //存放订阅者
    private List<Observer> observers = new ArrayList<>();
    //期刊版本
    private int version;
    /**
     * 添加订阅者,放入list中存储
     * @author Lin FuYuan
     * @param obj
     * @date 2020/1/6
     * @return void
     */
    @Override
    public void addObserver(Observer obj) {
        //存放在订阅者列表中
        observers.add(obj);
    }
    /**
     * 删除订阅
     * @author Lin FuYuan
     * @param obj
     * @date 2020/1/6
     * @return void
     */
    @Override
    public void deleteObserver(Observer obj) {
        //根据对象获取对象的下标 ,判断对象在list中是否存在, 如果存在 删除, 不存在 不做操作
        int i = observers.indexOf(obj);
        if(i>=0){
            observers.remove(obj);
        }
    }
    /**
     * 通知观察者
     * @author Lin FuYuan
     * @param
     * @date 2020/1/6
     * @return void
     */
    @Override
    public void notifyObserver() {
        for(int i= 0;i<observers.size();i++){
            Observer o =observers.get(i);
            o.update(version);
        }
    }
    /**
     * 杂志发布新的版本
     * @author Lin FuYuan
     * @param
     * @date 2020/1/6
     * @return void
     */
    public void publish(){
        //更新版本
        this.version++;
        //信息更新完毕,通知所有观察者
        notifyObserver();
    }

}
